package com.gosophia.conferenceManagement.scheme.service;

import java.util.List;

import com.gosophia.commons.OrderCondition;
import com.gosophia.commons.Page;
import com.gosophia.commons.PropertyFilter;
import com.gosophia.commons.exception.BusinessException;
import com.gosophia.conferenceManagement.common.service.ConferenceHandleService;
import com.gosophia.conferenceManagement.scheme.entity.SchemeTransientStore;
import com.gosophia.taskManagement.entity.Mission;

/**
 * 会议方案api
 * @author nana
 *
 */
public interface ConferenceSchemeService extends ConferenceHandleService{
    
   /**
    * 保存或更新会议方案暂存(包含大任务信息)
     * @param schemeTransientStore不能为null
    * @return 保存或更新的实体的id
    * @throws BusinessException
    */
    public Long saveOrUpdateSchemeTransientStore(SchemeTransientStore schemeTransientStore)throws BusinessException;
    
    /**
     * 删除会议方案暂存(包含大任务信息)
     * @param schemeTransientStoreId不能为null
     * @throws BusinessException
     */
    public void deleteSchemeTransientStore(Long schemeTransientStoreId) throws BusinessException;
    /**
     * 根据用户ID查找会议方案暂存列表
     * @param userInfoId不能为null
     * @param page page.pageSize>0  page.pageNo>0
     * @param propertyFilters
     * @param orderConditions
     * @return
     * @throws BusinessException
     */
    public Page<SchemeTransientStore> findSchemeTransientStoreByPage(Long userInfoId,Page<SchemeTransientStore> page, List<PropertyFilter> propertyFilters,
            List<OrderCondition> orderConditions) throws BusinessException;
    /**
     * 根据jobId查找会议方案暂存对象
     * @param jobId 不能为null
     * @return
     * @throws BusinessException
     */
    public SchemeTransientStore findTransientStoreByJobId(Long jobId)throws BusinessException;
    /**
     * 根据用户ID或查询条件查找会议方案暂存列表
     * @param userInfoId
     * @param page
     * @param propertyFilters
     * @param orderConditions
     * @return
     * @throws BusinessException
     */
    public Page<SchemeTransientStore> findSchemeTransientStoreSimplePage(Long userInfoId,Page<SchemeTransientStore> page,String searchStr, List<PropertyFilter> propertyFilters,
            List<OrderCondition> orderConditions) throws BusinessException;
    /**
     * 根据ID查询到会议方案对象
     * @param id
     * @return
     * @throws BusinessException
     */
    public SchemeTransientStore findTransientStoreById(Long id)throws BusinessException;
}
